/*Created by ZY on Tue Dec 27 2016 19:29:15 GMT+0800 (CST) */
!function (eeeeeeeeeee) {
    function t(i) {
        if (a[i])return a[i].exports;
        var s = a[i] = {exports: {}, id: i, loaded: !1};
        return eeeeeeeeeee[i].call(s.exports, s, s.exports, t), s.loaded = !0, s.exports
    }

    var a = {};
    return t.m = eeeeeeeeeee, t.c = a, t.p = "", t(0)
}([

    //TODO a(0)
    function a0(module, exports, a) {

        var r = a(2), s = a(1), d = a(4), re = a(8);

        var e = s.now() / 1e3;

        console.log(r.getMmsKey(e));

        d.getLC();
        console.log(d.getLC());

        re.init();
        re.getRequest();

    },

    //TODO a(1)
    function a3(module, exports) {

        var nativeBind = Function.prototype.bind, slice = Array.prototype.slice, emptyFn = function () {
        };

        module.exports = {
            extend: function (e, t) {
                var a = function () {
                };
                a.prototype = t.prototype, e.prototype = new a, e.prototype.constructor = e, e.superClass = t.prototype, t.prototype.constructor == Object.prototype.constructor && (t.prototype.constructor = t)
            }, trim: function (e) {
                return e.replace(/^\s\s*/, "").replace(/\s\s*$/, "")
            }, each: function (e, t) {
                var a, i;
                if (e instanceof Array) {
                    for (a = 0; a < e.length; a++)if (t.call(this, a, e[a]) === !1)return e
                } else for (i in e)if (t.call(this, i, e[i]) === !1)return e;
                return e
            }, getParamVal: function (e, t) {
                var a = new RegExp("(^|&)" + t + "=([^&]*)(&|$)", "i"), i = e.match(a);
                return null != i ? unescape(i[2]) : ""
            }, merge: function (e, t, a) {
                t || (t = {});
                for (var i in t)!t.hasOwnProperty(i) || a && e.hasOwnProperty(i) || (e[i] = t[i]);
                return e
            }, clearObj: function (e) {
                for (var t in e)delete e[t]
            }, setCookie: function (e, t, a) {
                a = a || {}, null === t && (t = "", a.expires = -1);
                var i = "";
                if (a.expires && ("number" == typeof a.expires || a.expires.toUTCString)) {
                    var s;
                    "number" == typeof a.expires ? (s = new Date, s.setTime(s.getTime() + 24 * a.expires * 60 * 60 * 1e3)) : s = a.expires, i = "; expires=" + s.toUTCString()
                }
                var r = a.path ? "; path=" + a.path : "", n = a.domain ? "; domain=" + a.domain : "", o = a.secure ? "; secure" : "";
                document.cookie = [e, "=", encodeURIComponent(t), i, r, n, o].join("")
            }, getCookie: function (e) {
                var t, a = new RegExp("(^| )" + e + "=([^;]*)(;|$)");
                return (t = document.cookie.match(a)) ? unescape(t[2]) : ""
            }, getJSON: function (e) {
                var t, a, i = e.url, s = e.data, r = e.success, n = e.fail, o = e.callback || "callback", l = e.timeout || 5e3, d = e.maxCount || 2, h = -1, c = 0, p = this, u = document.head || document.getElementsByTagName("head")[0] || document.documentElement, g = [];
                if (s)for (var f in s)g.push(f + "=" + s[f]);
                i += /\?/.test(i) ? "&" + g.join("&") : "?" + g.join("&");
                var v = function () {
                    var e = p.now(), t = "vjs_" + e + Math.floor(100 * Math.random());
                    return window[t] = function (a) {
                        m(), r.call(this, a, {responseTime: p.now() - e, retryCount: h, url: i}), window[t] = null
                    }, t
                }, m = function () {
                    window[t] && (window[t] = emptyFn), clearTimeout(c), a && a.parentNode && (u.removeChild(a), a.onload = a.onreadystatechange = null, a = void 0)
                }, _ = function () {
                    if (m(), h++, h >= d)return void(n && n.call(this, {url: i}));
                    t = v();
                    var s = i;
                    /(\=)\?(&|$)/i.test(s) ? s = s.replace(/(\=)\?(&|$)/i, "$1" + t + "$2") : s += "&" + o + "=" + t, e.log && e.log.pushLog("lib getJSON===" + s + "===" + t + "====" + h), a = document.createElement("script"), a.setAttribute("type", "text/javascript"), a.setAttribute("src", s), u.insertBefore(a, u.firstChild), c = setTimeout(_, l)
                };
                return _(), {destroy: m}
            }, formatValidateTime: function (e) {
                return e < 10 ? "0" + e : e
            }, ajax: function (options) {
                var url = options.url, a = options.data, i = options.type || "get", s = options.success, r = options.fail, n = [];
                for (var o in a)n.push(o + "=" + encodeURIComponent(a[o]));
                try {
                    var l = new XMLHttpRequest;
                    l.onload = function () {
                        4 == l.readyState && (l.status >= 200 && l.status < 300 || 304 == l.status ? s && s(l.responseText) : r && r(l.status))
                    }, "get" == i ? (url += url.indexOf("?") >= 0 ? "&" + n.join("&") : "?" + n.join("&"), l.open("get", url, !0), l.send(null)) : (l.open("post", url, !0), l.setRequestHeader("Content-type", "application/x-www-form-urlencoded"), l.send(n.length ? n.join("&") : null))
                } catch (d) {
                    r && r()
                }
            }, getScript: function (e, t, a) {
                var i = document.head || document.getElementsByTagName("head")[0] || document.documentElement, s = document.createElement("script");
                s.setAttribute("type", "text/javascript"), s.setAttribute("src", e), s.setAttribute("id", t), s.onload = function () {
                    a && a()
                }, i.insertBefore(s, i.firstChild)
            }, sendRequest: function (e, t) {
                var a = [];
                if (t) {
                    for (var i in t)a.push(i + "=" + t[i]);
                    e += /\?/.test(e) ? "&" : "?", e += a.join("&")
                }
                var s = new Image;
                s.onload = s.onerror = s.onabort = function () {
                    s.onload = s.onerror = s.onabort = null, s = null
                }, s.src = e
            }, timer: function (e, t) {
                var a, i = 0, s = !1;
                return {
                    repeatCount: function () {
                        return i
                    }, delay: function () {
                        return e
                    }, running: function () {
                        return s
                    }, start: function () {
                        a && clearInterval(a), i = 0, s = !0, a = setInterval(function () {
                            i++, t && t()
                        }, e)
                    }, stop: function () {
                        clearInterval(a), s = !1
                    }, reset: function () {
                        i = 0, a || this.start()
                    }
                }
            }, bind: function (e, t) {
                if (e.bind === nativeBind && nativeBind)return nativeBind.apply(e, slice.call(arguments, 1));
                var a = slice.call(arguments, 2);
                return function () {
                    return e.apply(t, a.concat(slice.call(arguments)))
                }
            }, createElement: function (e, t) {
                var a, i = document.createElement(e);
                for (a in t)t.hasOwnProperty(a) && (a.indexOf("-") !== -1 ? i.setAttribute(a, t[a]) : i[a] = t[a]);
                return i
            }, now: Date.now || function () {
                return +new Date
            }, formatTime: function (e) {
                var t = Math.floor(e / 60);
                t = t < 10 ? "0" + t : t.toString();
                var a = Math.floor(e % 60);
                return a = a < 10 ? "0" + a : a.toString(), t + ":" + a
            }, formatDate: function (e, t, a) {
                if (!e)return "";
                var i = e instanceof Date ? e : new Date(1e3 * e), s = String(i.getFullYear()).substr(2), r = i.getMonth() + 1, n = i.getDate(), o = i.getHours(), l = i.getMinutes(), d = i.getSeconds();
                return o = o < 10 ? "0" + o : o, l = l < 10 ? "0" + l : l, d = d < 10 ? "0" + d : d, t = t || "YY.MM.DD HH.mm.ss", a && (s = i.getFullYear(), r = r < 10 ? "0" + r : r, n = n < 10 ? "0" + n : n), t.replace(/YY|MM|DD|HH|mm|ss/gi, function (e) {
                    switch (e) {
                        case"YY":
                            return s;
                        case"MM":
                            return r;
                        case"DD":
                            return n;
                        case"HH":
                            return o;
                        case"mm":
                            return l;
                        case"ss":
                            return d
                    }
                })
            }, formatLiveTime: function (e) {
                return this.formatDate(e, "HH:mm:ss", !0)
            }, parseToJSON: function (e) {
                if (!e)return {};
                var t, a = {}, i = /(.+?)=(.+)/, s = e.replace(/^[?&]/, "").split("&");
                return s.forEach(function (e) {
                    t = e.match(i), null != t && (a[t[1]] = unescape(t[2]))
                }), a
            }, JSONTOStr: function (e) {
                if (JSON)return JSON.stringify(e);
                switch (typeof e) {
                    case"string":
                        return '"' + e.replace(/(["\\])/g, "\\$1") + '"';
                    case"object":
                        if (e instanceof Array) {
                            for (var t = [], a = e.length, i = 0; i < a; i++)t.push(arguments.callee(e[i]));
                            return "[" + t.join(",") + "]"
                        }
                        if (null == e)return "null";
                        var s = [];
                        for (var r in e)s.push(arguments.callee(r) + ":" + arguments.callee(e[r]));
                        return "{" + s.join(",") + "}";
                    case"number":
                        return e;
                    case!1:
                        return e;
                    case void 0:
                    default:
                        return ""
                }
            }, StrTOJSON: function (str) {
                return window.JSON ? JSON.parse(str) : eval("(" + str + ")")
            }, compare: function (e) {
                return function (t, a) {
                    var i = t[e], s = a[e];
                    return s < i ? 1 : s > i ? -1 : 0
                }
            }, isEmptyObj: function (e) {
                if ("function" == typeof Object.keys)return 0 == Object.keys(e).length;
                for (var t in e)return !1;
                return !0
            }, bjTimeToLocal: function (e) {
                var t = 60 * (e.getTimezoneOffset() + 480) * 1e3;
                return new Date(e.getTime() - t)
            }, arrayIndexOf: function (e, t) {
                if ("function" == typeof e.indexOf)return e.indexOf(t);
                for (var a = 0, i = e.length; a < i; a++)if (e[a] === t)return a;
                return -1
            }, checkFullScreenFn: function (e) {
                for (var t, a, i, s, r, n = ["webkit", "moz"], o = 0, l = n.length; o < l; o++) {
                    var d = n[o] + "RequestFullScreen", h = n[o] + "CancelFullScreen";
                    "function" == typeof e[d] && (t = d, i = e, r = n[o] + "fullscreenchange"), "function" == typeof document[h] && (a = h, s = document)
                }
                return t || "function" != typeof e.msRequestFullscreen || (t = "msRequestFullscreen", i = e), t || "function" != typeof e.webkitEnterFullScreen || (t = "webkitEnterFullScreen", i = e), a || "function" != typeof document.msExitFullscreen || (a = "webkitExitFullScreen", s = document), a || "function" != typeof e.webkitExitFullScreen || (a = "webkitExitFullScreen", s = e), {
                    requestFn: t,
                    requestEl: i,
                    cancelFn: a,
                    cancelEl: s,
                    changeEventName: r
                }
            }
        }
    },
    //TODO a(2)
    function a4(module, exports, a) {
        var Encode = a(3);
        eval(eval(function (R9, C6, C7) {
            return eval("(" + R9 + ')("' + C6 + '","' + C7 + '")')
        }("function(s,t){for(var i=0,k='',f=function(j){return parseInt(t.substr(j%(t.length),2),16)/2;};i<s.length;i+=2){var d=parseInt(s.substr(i,2),16);k+=String.fromCharCode(d-f(i));}return k;}",
            "ded5df8cad91bba29cdca3d1d2e1d1e3db945edae2c6e6969896ac9598eca09f6197a293acbb608cab9de0a5a6ab6996a69aaaa463a8a0a999adac9465d7a1c7a0a6a698a596a29c9de466969895eca88f8cab9598eca39d61949c93a7bb5e8cae95a0a5999cad90d195a8ae6793d1d0cbd9d2956f87a496a0a6a694d39694df9fa95dc5e1d3d7ea97d2dd95c9a899b06988e7dbd5e84ec5a1aa8a9699ad6a9ca598a2ab65a89a9da69c9de46994989aa5a46096b4a091b395a36e8d9c9eaabb5f8fa5a496ab9fa57a8a9c8eaeaa6091a8b29bb0aa9468949a9db9a85a9aa59b91b3959e678da3aaa5a262939da1ad9f9f956f879cdda5a25edba0a591b0aa946c919a96b9a85a9ba39b9ea8b29f5e9ed2c6e0e9939d979e9da09de469c595a0dddc56c4a39bd4d9dbd3a9c7aa8daaad5c9ca4b29aa0a6a55e9b9497a6a45a95a09b91b395a26d8ba099a2aa6196b49f91ae959cad989895eca98f8cabaa90ab9e9a6690b190a4a260999d96a7a4e5a168999495ecaa658fa19e969da9a96e909aa49ca9638f9fe5cb9da79465d7d091aaaf5c99a7b2999d96d2a4d194dbd5e84eaca1aa90a7a39a6d95b190a5a264959d96a69c9ea56394b197a0ab6091a4b29a9dac9469929898a5a4579d9fe59aaba99e6e8da497b9a66d8b9fe59dd899a06c8da29ca6bb5e8ca99de0a99da86d959a98b9a96d8ba7a596ad9eb1688b9cddd89f688b9fe59aad99a46d8d9f98b9a957a197a29ea2999cad949d8eb39e639a9da2ad9f9e9866919a9dacbb599698a79ba6b29e73879e9ea2ac73949b9de0a6a6957487a096a2aa609bb4989ba09de46795959fa4ee6396abaa98ec9ed074879e9ea0a7679198a79fa69b9e68a49da3b1a6a696a6ac90a4e59d658b9cdda5d8579d97a19aa299a5658d95a0bda86c94aa96caa698a95da0a1a2b5ab6d8b9fe59dd699a2698d95a3b19e66939d9999a59ba06694b1969db56591a6a19fb99fa65d8fe498a6a2669898aba59ca29e6395a096b9a75a94a09b98a7a0b16788ab8dabae5c93a6b293a6999cad929d8eaeaa5e91abaa90a4e59d6e8b9cdda5ab57a2a8a296ae95a46b8d9d9eaabb608fa79d96a8a0b16588aaa29cad6291a3a2ada4999e6888ab8daba95c9bb49d94daced8a8c4959f9ca6a697a39998ecd095739c949ba4a4619cb49f94a4e59d6688ab95eca9688b9fe59ca0a3a56398a5aaa69f6aa097a19ba299a06a8d9eaaa59f6d8ba69d96a7a6a27a8f9895eca9918ca99598eca498678f95a39ca76691a4a49fb99e9865d7a0ca9db55698a7999daab29d5e999495ecad5a9698aba5aaa39a68a49795b39e61999d9eada499a16c8d9d9eb9a9579d979de0a59d9865d79dc69db05693e7a1cea0a6b1609195a1b19e669a9d9998eca2d05e9e949da0a6a696d596a2a4e59e679da98da4ee629a9b9e98a29fa57a9095a49ca6a69c9b9de0a8cf956f959a97a8a97394ad9de0a9a0ab5d98a091a4ee62c798a790a4e5a0978ba59ca2af739598a998eca3ab5d93a493acbb5f8fa49e96aa9eb16888a68da6ad5c8fa39f96a99fa57a8a9d8eb0a6a697d4ac90a4e5a16d8ba295a2a7669cb4989a9da7e0a7d4d18eb3d76291d2d5c9e6aee05da89e8eae986e8898d2d1e8d4955dd3b0dce2985cc6d7cedab5e1947e9199929db1a0c8e3e2dae28db0699ca9a2e2eb9acfaed2ded5d9949791959fb8aa8cc4a3ea919c8fcb6e87d9b9d9a457c8d08dcd9c8f985d969e93a6bb608fa29f96a6a3b16788aaa2a6a75c9cb49da7e2e2d8a1999499a6a466a8a2999fa996a865d79dc8b3ac609d979de0a8d39865d7a08eb0ac6591ae959da99b9c6a95b195a0a76191a0a1ada696a65d97a1aaa6a25f939da2ada696a85d969f93aca773969ba198a29fa26ea49c8eb39e669c9d9f9fa8b297678b9f9ba2a9739398a790a4e5a1668b9cdda6a8579f979de0a5a5986a8d9e9db9a657a2979de0a6cf9865d79e9a9db05edba4a591afdfd1a9d4ded3efde669dd5e2d6d7e1d5a4cd94d5a99fa9d9d0df88c8a298a996a98da4ee5f989ba099a2a0a269a49f8eb0b36196ae95a1a899a56c88a68dadae5c9bb49f94a4e59d9b88a895ecaa93a2979ea1a09de46588a68da4ee5f979b9de0ad96a87295a093a7bb60a2a5a296a8b29e6f879cdda7a75a93e7a1a19daba95d8fe498ada2669b98ac9aac9ba06992b197aeaf6291ab9fa1b3959cad92a091a4ee639598a790a8a3b1678b9cdda5d7578fdda3a5dea0aaa09198b9adb194d2e195a3e8a4a8a5949ad1d9e495d7d7a891efc1a57287dcc6e6e993acdde190e4a29a98c7cdd7b5ea56d7a69694a5a49a6ca49ea1a6aa5ca2979de0aa9f9865d7a28eae9e67969da099b9a0986a939a99b9a857a1ac959ca49ba166a49c91a4ee61c798ac90ac9e9865d79d959db05693e7a0a0a0a49f63939daa9fa657a1ac959aab9ba566a49d91aca75c8cae95a0a599a36ba49e8eaea6a697a7a9a59c9de468c1989dac9f6d8ba6a394ad9d956f879cdda7a75a93e79ecc9dab946e919a9cabbb59969ba49da296ab6c979a9f9cae6191a39eada5999cad91cf8eb2b364949da4ada6aca569999497a5a45f94a1b29aa09de46a88a88da4ee60989ba49aa2a6b16888ab95eca7659d979f9fa29f9f7a90989baca46797a7b2999d969563d3dbb8e8e897d1d69590aca69865d7a2979db25693e79f9fa09de4699495a49ca86491a19e9cb99e9867929a9ab9a9579d979f96a6a3b1668ba2999db46b9a9f9ba1b99eab5d96a293a5ae67a8a09998eca19f5e999495eca8638fa8a391b0959f6c8d9f97a5bb5f8fa09b9ab99e9574879cdda5da5a93e7a09b9da79465d79fcba0a6a69a98ab90a4e59d688b9cdda79f6d93e79fa29c9de46692989ea6bb618cadaa90a4e5a09b8ba09da29f6d9ba19ba29ca1a463939f9ab9a1608f9fe59bda96a87287a39ea2a6629cb49e94ad9e9a5e9e949da5a464a8a29998eca1d15e999cdda8d96ca0a3a396aca29f7a8a9fa4a8aa5c95a3b29baea4a15e9ac09ab1ea658e9aaaa59c9de46797989da4a46098a3b2999da9a95d959d93a0a6a694a196a79c9ea4638b9f9ba2a867a8a296a29ca09d6397a4aaa5a25edba1ce91b295a2658d9895ecab948cae9de0a5d1a65d90a493acad5fa8a2999bac9b9f7a8a9e8eb2a6a698a8ac90a4e5a19b8b9cdda49f6897a79b9fb9989e7187a299a2aa61a8a099a1ac96ab6c8f9a96b9a86893e7a19eb2a5a26394b195b39e5edba3ce94aba6956f879cdda9ab5a9ba19b9bb99e95739c949baaa45a93e7a09c9dac9468989a9eb9a75a93e7a0ca9da7a0678d9d97b9a96a8b9fe599a899a16b8d95a4a8a96896a59ba7c8a69a98c7cdd7b5ea56b7a89bd4d9dbd3a9c7998dabae5c94b49f94a4e5a19988aaa29cad65919ba09ea29da56ea497989db55698a89b98a5b29e6196a293a9aa739498a79ca2a2a17a90a88daca75a949f9b99a8b29d5e9e9cdda5b05693e7a1cea09de4699195a39ca6a697a6999bad9b9574879e9ca2a25edba39d91ae959cad909f91adab5c8cadaa98ec9eab5d8fe499d9a25edba1a191ae959d678d9d9dacbb608f9fe599d896956fb3a1c3c8af5cc6d7cedab5e19489989ad1d9e495d7d79a90a4e59e6b8ba49ba2a866a89a9e91b095a46d8da598b9a75a95a09ba1b99d957487a39ba2aa6094b49e94aba0956f87a495a2a25edba1a691b0aa9cad91cfa49cad5e91a2a2ada6999cad90959f9ca6a694a79998ec9e957387a09da2af65a8a2999ea59b9f6ea49e8eb3ae63919fa4ada5a79cad919f8ef1e893d7e4dfd694c1a17480da9baee464e0ecea919c96a7abc0de85d3a76b85d5d2ccd5a5d09995d195a5a865c7d0a5a0daa0a06d96cd9ba8ac94c8a7ce9ed68f989491a987dee0a3dca8a29eabd1d29f95ced0dfe99dd0dddbcfdce4dba0c9d8daa4e5508fcea0a596e1c5a991cedddde1509ee5ceda94e59ea69ce7a9aedca3d1d2e1d1e3db948e8bde8eefe893d7e4dfd694c6e8a7dc98c9aedca3d1d2e1d1e3db948e8bde8eefe893d7e4dfd694c691a7dc98b4aedca3d1d2e1d1e3db948e8bde8eefe893d7e4dfd694c6caa7dc98d0aedca3d1d2e1d1e3db948e8bde8eefe893d7e4dfd694c6a8a7dc98afaedca3d1d2e1d1e3db948e8bde8eefe893d7e4dfd694c6aa73d1e991c6b094d8ddd0dcdddcda5db898d79df1a0c8e3e2dae28dc5729ca9d7f1a2959dd5e2d6d7e1d5a4cd94bea0e857dee1d2dce9dfda55b8aad7f1a29d9dd5e2d6d7e1d5a4cd94bea0e857dee1d2dce9dfda55b892d7f1a29a9dd5e2d6d7e1d5a4cd94bea0e857dee1d2dce9dfda55b88da2b1e8ab8fbba7cee9dbcfa9c8dbd39ccf5ad598e8dad9e1e1a7cd8cbe95b3a0e09bcea2dae2da98d3d5d4e29e878fe196e3e6d2e0aad1da85cda3a0e09be2a2dae2da98d3d5d4e29e878fe196e3e6d2e0aad1da85cdb36bd5ec99cdaed3e1a3c2e0cee3e456bc9bdf91efdfd1a9d4ded394cf6a9fe1eae5afe3cda77fb7caedb3a9cfd8e3cdbfd2e56fbe9d91b5c677aed4e6a2d39f98a8c4cfd7d9ea8dced4e6a2d3a0989cc4e0a6c4bf79c8e8a7cee9dbcfa9c8dbd39cdb57dee5ceda94cc9d7281adaac7985ac2a1aa8ad8d2cfa7d8dcd996a28d96ac8fa9c4b6b79ad88e91d3aa6bdba1bc96dca594578f9d879db550d7dec0dce6d6da9c81a687b5bb81859bcc9db18fd1a3c28e91d3ac6b85c4e1ceac8f989496a987d9e8a0d2e18fa3e8dfe5b0d1d1d9e9e89c83b4dbcbe3d1d190be9dc2cfd560c097d294e8d5d5a8bacb98d19f89c2a3ca90b9dbcfa4c3d1c0d3ab8bbecea3c59deacf96d3cfcd9cea57dee1d2dce9dfda55bea3e2f1a295c8e3b0d4aed3e1a3c2e0cee3e456c898e8ded5df8c9490a987c1ba63859bcc9ab1e59e848dd49d9c986193a2e48a9dac8ea8c7dbdce1dba2cbd4dad7e2d2e557998ecfe3df9c859bcc9bb1e59e848dd49d9c986794a1a48a9dac8e9ad1ded4e6986885dbd6ded9b8d1ae81a7d9e6efa9d5d4e1dde6db8c7acdcfd4d8db89c2a0ca90d998cb6788e9c8d5ea91cb97e191efdfd1a9d4ded394d561e0ec99cfd9e1b9a2d2b7caedb094d8ddd0dcdddcda5dc495e0ead7a083ce9ea5ec9fbb63c7a48d96aa678598ac8ad88fa657acb09a96a28d95ac8fdae3e1cda9c4becedbdea2859bcc9bb18fbb579ae2c6e696a2a0a3a496a7b29e719c949baba45e94b4a094aba59a69a49d8eb39e50c791999bab9b9e7a91959fa8a45fa8a1a9a59c9de467c1989ea99f6d93e7a39bae959d688da59aaabb608fa39f96a8a29f7a9195a1b1a6a695ae95a1a79ba36ea49e9196dba0d5dedf8a9da79465d79e9da0af659198a99096d2dea7cede87a0ae5c8cae958aa08f9857c68e8eae9e67999da099b9a0986e919a9ea6ac739398aba59c9de468949895ecab928cae9de0aa9fa6668f9aa3b19e64979da2ada599a16a8d95a4abaf5c99a69eada5a7a2678d9eaaa6b26b93e79fc9b3959e658da595acbb5f8fa8a0969da79465d79dc7a0a85c97a8b2999da99cad94d1a49cab608f9fe5caa4a4a06890a58eae9e5f949ba49da29eb16688a88daaa65c8fa4a296a89fb16688ab8da4ee5f949ba298a2a3a27a90959f9cae6391a19f9cb9989e618fe49ad89f5ad5ace59ae5c8cb66bc94d9a0a7658c9bdba5d9a8da72d3d4cee7d18d95cc95d6a0df9570d5cdd794e56bdba1dec3d3a0c95dcd98d99db1a0c8e3e2dae28ddbb28bded4e8d7a2c8c1d6cfdce1a69bd4dac8e8df9dd197d294e896e7abc0de85d3a76bdba1bc96dca59457989d879db550ca91a78ae8c6e067c1e4cedf985ac2a1aa8ae38fa79bcede8dead7a083e199d6b19da7ad91ddc0d3a78b8be399d69da8da608a95d7b1ee60d4cacc9ad1959d61c49591d9b46ca0a099dab0a9a9689098ca9fb3a09ee1d2dce9dfda55c4e991dbdba2afd8e3cdc8d8d1ae99d2dae2d9a2ccdedb90d999e05edae2c6e6968d94ac8fb5b8a28e61be9ea296e297d9d4b8cded8f989492a987dee597d19199c7a8aa8e618198c4a9b350d7dec0dce6d6da9c81a7d7d9eaa3d5dd8dade2d0db99c4c7c4a5d356bed499dca0e1d49ed2c7c4a6d38bbecea0c59ccca05e88c7c4a9d3568cec99cfd9e1bc9ecdd3a7d5d999aed4e6a2dae2da98d3d5d4e29e938fe399daa0db95b0d5cdd794d55fa0e79fb7a2d5a45d81d9d4a8ae508cae8fb5b8a28e6f81ded4e8d7a2c8c1d6cfdce18e61be9ea2eca87d91d7a59096a5a46d988e8eb398a1c8d2dfcde8ccd79ad88e9f96c372989199c7a7aa8ea9cebfd9e6df9cca91a8dad9e1e1a7cd8caae2d99dc7d4c8c7a5ca949a8ae090e6a19c8ee3d5d1e7c8cb67bc95c0d3a98b8b98eae5af",
            "d0e8dad86abed8cae8ec5cc6deda")));

        console.log(Key);
        module.exports = Key;

    },

    //TODO a(3)
    function a5(module, exports) {
        var a = a || function (e, t) {
                var a = {}, i = a.lib = {}, s = i.Base = function () {
                    function e() {
                    }

                    return {
                        extend: function (t) {
                            e.prototype = this;
                            var a = new e;
                            return t && a.mixIn(t), a.$super = this, a
                        }, create: function () {
                            var e = this.extend();
                            return e.init.apply(e, arguments), e
                        }, init: function () {
                        }, mixIn: function (e) {
                            for (var t in e)e.hasOwnProperty(t) && (this[t] = e[t]);
                            e.hasOwnProperty("toString") && (this.toString = e.toString)
                        }, clone: function () {
                            return this.$super.extend(this)
                        }
                    }
                }(), r = i.WordArray = s.extend({
                    init: function (e, a) {
                        e = this.words = e || [], this.sigBytes = a != t ? a : 4 * e.length
                    }, toString: function (e) {
                        return (e || o).stringify(this)
                    }, concat: function (e) {
                        var t = this.words, a = e.words, i = this.sigBytes, e = e.sigBytes;
                        if (this.clamp(), i % 4)for (var s = 0; s < e; s++)t[i + s >>> 2] |= (a[s >>> 2] >>> 24 - 8 * (s % 4) & 255) << 24 - 8 * ((i + s) % 4); else if (65535 < a.length)for (s = 0; s < e; s += 4)t[i + s >>> 2] = a[s >>> 2]; else t.push.apply(t, a);
                        return this.sigBytes += e, this
                    }, clamp: function () {
                        var t = this.words, a = this.sigBytes;
                        t[a >>> 2] &= 4294967295 << 32 - 8 * (a % 4), t.length = e.ceil(a / 4)
                    }, clone: function () {
                        var e = s.clone.call(this);
                        return e.words = this.words.slice(0), e
                    }, random: function (t) {
                        for (var a = [], i = 0; i < t; i += 4)a.push(4294967296 * e.random() | 0);
                        return r.create(a, t)
                    }
                }), n = a.enc = {}, o = n.Hex = {
                    stringify: function (e) {
                        for (var t = e.words, e = e.sigBytes, a = [], i = 0; i < e; i++) {
                            var s = t[i >>> 2] >>> 24 - 8 * (i % 4) & 255;
                            a.push((s >>> 4).toString(16)), a.push((15 & s).toString(16))
                        }
                        return a.join("")
                    }, parse: function (e) {
                        for (var t = e.length, a = [], i = 0; i < t; i += 2)a[i >>> 3] |= parseInt(e.substr(i, 2), 16) << 24 - 4 * (i % 8);
                        return r.create(a, t / 2)
                    }
                }, l = n.Latin1 = {
                    stringify: function (e) {
                        for (var t = e.words, e = e.sigBytes, a = [], i = 0; i < e; i++)a.push(String.fromCharCode(t[i >>> 2] >>> 24 - 8 * (i % 4) & 255));
                        return a.join("")
                    }, parse: function (e) {
                        for (var t = e.length, a = [], i = 0; i < t; i++)a[i >>> 2] |= (255 & e.charCodeAt(i)) << 24 - 8 * (i % 4);
                        return r.create(a, t)
                    }
                }, d = n.Utf8 = {
                    stringify: function (e) {
                        try {
                            return decodeURIComponent(escape(l.stringify(e)))
                        } catch (t) {
                            throw Error("Malformed UTF-8 data")
                        }
                    }, parse: function (e) {
                        return l.parse(unescape(encodeURIComponent(e)))
                    }
                }, h = i.BufferedBlockAlgorithm = s.extend({
                    reset: function () {
                        this._data = r.create(), this._nDataBytes = 0
                    }, _append: function (e) {
                        "string" == typeof e && (e = d.parse(e)), this._data.concat(e), this._nDataBytes += e.sigBytes
                    }, _process: function (t) {
                        var a = this._data, i = a.words, s = a.sigBytes, n = this.blockSize, o = s / (4 * n), o = t ? e.ceil(o) : e.max((0 | o) - this._minBufferSize, 0), t = o * n, s = e.min(4 * t, s);
                        if (t) {
                            for (var l = 0; l < t; l += n)this._doProcessBlock(i, l);
                            l = i.splice(0, t), a.sigBytes -= s
                        }
                        return r.create(l, s)
                    }, clone: function () {
                        var e = s.clone.call(this);
                        return e._data = this._data.clone(), e
                    }, _minBufferSize: 0
                });
                i.Hasher = h.extend({
                    init: function () {
                        this.reset()
                    }, reset: function () {
                        h.reset.call(this), this._doReset()
                    }, update: function (e) {
                        return this._append(e), this._process(), this
                    }, finalize: function (e) {
                        return e && this._append(e), this._doFinalize(), this._hash
                    }, clone: function () {
                        var e = h.clone.call(this);
                        return e._hash = this._hash.clone(), e
                    }, blockSize: 16, _createHelper: function (e) {
                        return function (t, a) {
                            return e.create(a).finalize(t)
                        }
                    }, _createHmacHelper: function (e) {
                        return function (t, a) {
                            return c.HMAC.create(e, a).finalize(t)
                        }
                    }
                });
                var c = a.algo = {};
                return a
            }(Math);
        !function () {
            var e = a, t = e.lib.WordArray;
            e.enc.Base64 = {
                stringify: function (e) {
                    var t = e.words, a = e.sigBytes, i = this._map;
                    e.clamp();
                    for (var e = [], s = 0; s < a; s += 3)for (var r = (t[s >>> 2] >>> 24 - 8 * (s % 4) & 255) << 16 | (t[s + 1 >>> 2] >>> 24 - 8 * ((s + 1) % 4) & 255) << 8 | t[s + 2 >>> 2] >>> 24 - 8 * ((s + 2) % 4) & 255, n = 0; 4 > n && s + .75 * n < a; n++)e.push(i.charAt(r >>> 6 * (3 - n) & 63));
                    if (t = i.charAt(64))for (; e.length % 4;)e.push(t);
                    return e.join("")
                }, parse: function (e) {
                    var e = e.replace(/\s/g, ""), a = e.length, i = this._map, s = i.charAt(64);
                    s && (s = e.indexOf(s), -1 != s && (a = s));
                    for (var s = [], r = 0, n = 0; n < a; n++)if (n % 4) {
                        var o = i.indexOf(e.charAt(n - 1)) << 2 * (n % 4), l = i.indexOf(e.charAt(n)) >>> 6 - 2 * (n % 4);
                        s[r >>> 2] |= (o | l) << 24 - 8 * (r % 4), r++
                    }
                    return t.create(s, r)
                }, _map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="
            }
        }(), function (e) {
            function t(e, t, a, i, s, r, n) {
                return e = e + (t & a | ~t & i) + s + n, (e << r | e >>> 32 - r) + t
            }

            function i(e, t, a, i, s, r, n) {
                return e = e + (t & i | a & ~i) + s + n, (e << r | e >>> 32 - r) + t
            }

            function s(e, t, a, i, s, r, n) {
                return e = e + (t ^ a ^ i) + s + n, (e << r | e >>> 32 - r) + t
            }

            function r(e, t, a, i, s, r, n) {
                return e = e + (a ^ (t | ~i)) + s + n, (e << r | e >>> 32 - r) + t
            }

            var n = a, o = n.lib, l = o.WordArray, o = o.Hasher, d = n.algo, h = [];
            !function () {
                for (var t = 0; 64 > t; t++)h[t] = 4294967296 * e.abs(e.sin(t + 1)) | 0
            }(), d = d.MD5 = o.extend({
                _doReset: function () {
                    this._hash = l.create([1732584193, 4023233417, 2562383102, 271733878])
                }, _doProcessBlock: function (e, a) {
                    for (var n = 0; 16 > n; n++) {
                        var o = a + n, l = e[o];
                        e[o] = 16711935 & (l << 8 | l >>> 24) | 4278255360 & (l << 24 | l >>> 8)
                    }
                    for (var o = this._hash.words, l = o[0], d = o[1], c = o[2], p = o[3], n = 0; 64 > n; n += 4)16 > n ? (l = t(l, d, c, p, e[a + n], 7, h[n]), p = t(p, l, d, c, e[a + n + 1], 12, h[n + 1]), c = t(c, p, l, d, e[a + n + 2], 17, h[n + 2]), d = t(d, c, p, l, e[a + n + 3], 22, h[n + 3])) : 32 > n ? (l = i(l, d, c, p, e[a + (n + 1) % 16], 5, h[n]), p = i(p, l, d, c, e[a + (n + 6) % 16], 9, h[n + 1]), c = i(c, p, l, d, e[a + (n + 11) % 16], 14, h[n + 2]), d = i(d, c, p, l, e[a + n % 16], 20, h[n + 3])) : 48 > n ? (l = s(l, d, c, p, e[a + (3 * n + 5) % 16], 4, h[n]), p = s(p, l, d, c, e[a + (3 * n + 8) % 16], 11, h[n + 1]), c = s(c, p, l, d, e[a + (3 * n + 11) % 16], 16, h[n + 2]), d = s(d, c, p, l, e[a + (3 * n + 14) % 16], 23, h[n + 3])) : (l = r(l, d, c, p, e[a + 3 * n % 16], 6, h[n]), p = r(p, l, d, c, e[a + (3 * n + 7) % 16], 10, h[n + 1]), c = r(c, p, l, d, e[a + (3 * n + 14) % 16], 15, h[n + 2]), d = r(d, c, p, l, e[a + (3 * n + 5) % 16], 21, h[n + 3]));
                    o[0] = o[0] + l | 0, o[1] = o[1] + d | 0, o[2] = o[2] + c | 0, o[3] = o[3] + p | 0
                }, _doFinalize: function () {
                    var e = this._data, t = e.words, a = 8 * this._nDataBytes, i = 8 * e.sigBytes;
                    for (t[i >>> 5] |= 128 << 24 - i % 32, t[(i + 64 >>> 9 << 4) + 14] = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8), e.sigBytes = 4 * (t.length + 1), this._process(), e = this._hash.words, t = 0; 4 > t; t++)a = e[t], e[t] = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8)
                }
            }), n.MD5 = o._createHelper(d), n.HmacMD5 = o._createHmacHelper(d)
        }(Math), function () {
            var e = a, t = e.lib, i = t.Base, s = t.WordArray, t = e.algo, r = t.EvpKDF = i.extend({
                cfg: i.extend({
                    keySize: 4,
                    hasher: t.MD5,
                    iterations: 1
                }), init: function (e) {
                    this.cfg = this.cfg.extend(e)
                }, compute: function (e, t) {
                    for (var a = this.cfg, i = a.hasher.create(), r = s.create(), n = r.words, o = a.keySize, a = a.iterations; n.length < o;) {
                        l && i.update(l);
                        var l = i.update(e).finalize(t);
                        i.reset();
                        for (var d = 1; d < a; d++)l = i.finalize(l), i.reset();
                        r.concat(l)
                    }
                    return r.sigBytes = 4 * o, r
                }
            });
            e.EvpKDF = function (e, t, a) {
                return r.create(a).compute(e, t)
            }
        }(), a.lib.Cipher || function (e) {
            var t = a, i = t.lib, s = i.Base, r = i.WordArray, n = i.BufferedBlockAlgorithm, o = t.enc.Base64, l = t.algo.EvpKDF, d = i.Cipher = n.extend({
                cfg: s.extend(),
                createEncryptor: function (e, t) {
                    return this.create(this._ENC_XFORM_MODE, e, t)
                },
                createDecryptor: function (e, t) {
                    return this.create(this._DEC_XFORM_MODE, e, t)
                },
                init: function (e, t, a) {
                    this.cfg = this.cfg.extend(a), this._xformMode = e, this._key = t, this.reset()
                },
                reset: function () {
                    n.reset.call(this), this._doReset()
                },
                process: function (e) {
                    return this._append(e), this._process()
                },
                finalize: function (e) {
                    return e && this._append(e), this._doFinalize()
                },
                keySize: 4,
                ivSize: 4,
                _ENC_XFORM_MODE: 1,
                _DEC_XFORM_MODE: 2,
                _createHelper: function () {
                    return function (e) {
                        return {
                            encrypt: function (t, a, i) {
                                return ("string" == typeof a ? f : g).encrypt(e, t, a, i)
                            }, decrypt: function (t, a, i) {
                                return ("string" == typeof a ? f : g).decrypt(e, t, a, i)
                            }
                        }
                    }
                }()
            });
            i.StreamCipher = d.extend({
                _doFinalize: function () {
                    return this._process(!0)
                }, blockSize: 1
            });
            var h = t.mode = {}, c = i.BlockCipherMode = s.extend({
                createEncryptor: function (e, t) {
                    return this.Encryptor.create(e, t)
                }, createDecryptor: function (e, t) {
                    return this.Decryptor.create(e, t);
                }, init: function (e, t) {
                    this._cipher = e, this._iv = t
                }
            }), h = h.CBC = function () {
                function t(t, a, i) {
                    var s = this._iv;
                    s ? this._iv = e : s = this._prevBlock;
                    for (var r = 0; r < i; r++)t[a + r] ^= s[r]
                }

                var a = c.extend();
                return a.Encryptor = a.extend({
                    processBlock: function (e, a) {
                        var i = this._cipher, s = i.blockSize;
                        t.call(this, e, a, s), i.encryptBlock(e, a), this._prevBlock = e.slice(a, a + s)
                    }
                }), a.Decryptor = a.extend({
                    processBlock: function (e, a) {
                        var i = this._cipher, s = i.blockSize, r = e.slice(a, a + s);
                        i.decryptBlock(e, a), t.call(this, e, a, s), this._prevBlock = r
                    }
                }), a
            }(), p = (t.pad = {}).Pkcs7 = {
                pad: function (e, t) {
                    for (var a = 4 * t, a = a - e.sigBytes % a, i = a << 24 | a << 16 | a << 8 | a, s = [], n = 0; n < a; n += 4)s.push(i);
                    a = r.create(s, a), e.concat(a)
                }, unpad: function (e) {
                    e.sigBytes -= 255 & e.words[e.sigBytes - 1 >>> 2]
                }
            };
            i.BlockCipher = d.extend({
                cfg: d.cfg.extend({mode: h, padding: p}), reset: function () {
                    d.reset.call(this);
                    var e = this.cfg, t = e.iv, e = e.mode;
                    if (this._xformMode == this._ENC_XFORM_MODE)var a = e.createEncryptor; else a = e.createDecryptor, this._minBufferSize = 1;
                    this._mode = a.call(e, this, t && t.words)
                }, _doProcessBlock: function (e, t) {
                    this._mode.processBlock(e, t)
                }, _doFinalize: function () {
                    var e = this.cfg.padding;
                    if (this._xformMode == this._ENC_XFORM_MODE) {
                        e.pad(this._data, this.blockSize);
                        var t = this._process(!0)
                    } else t = this._process(!0), e.unpad(t);
                    return t
                }, blockSize: 4
            });
            var u = i.CipherParams = s.extend({
                init: function (e) {
                    this.mixIn(e)
                }, toString: function (e) {
                    return (e || this.formatter).stringify(this)
                }
            }), h = (t.format = {}).OpenSSL = {
                stringify: function (e) {
                    var t = e.ciphertext, e = e.salt, t = (e ? r.create([1398893684, 1701076831]).concat(e).concat(t) : t).toString(o);
                    return t = t.replace(/(.{64})/g, "$1\n")
                }, parse: function (e) {
                    var e = o.parse(e), t = e.words;
                    if (1398893684 == t[0] && 1701076831 == t[1]) {
                        var a = r.create(t.slice(2, 4));
                        t.splice(0, 4), e.sigBytes -= 16
                    }
                    return u.create({ciphertext: e, salt: a})
                }
            }, g = i.SerializableCipher = s.extend({
                cfg: s.extend({format: h}), encrypt: function (e, t, a, i) {
                    var i = this.cfg.extend(i), s = e.createEncryptor(a, i), t = s.finalize(t), s = s.cfg;
                    return u.create({
                        ciphertext: t,
                        key: a,
                        iv: s.iv,
                        algorithm: e,
                        mode: s.mode,
                        padding: s.padding,
                        blockSize: e.blockSize,
                        formatter: i.format
                    })
                }, decrypt: function (e, t, a, i) {
                    return i = this.cfg.extend(i), t = this._parse(t, i.format), e.createDecryptor(a, i).finalize(t.ciphertext)
                }, _parse: function (e, t) {
                    return "string" == typeof e ? t.parse(e) : e
                }
            }), t = (t.kdf = {}).OpenSSL = {
                compute: function (e, t, a, i) {
                    return i || (i = r.random(8)), e = l.create({keySize: t + a}).compute(e, i), a = r.create(e.words.slice(t), 4 * a), e.sigBytes = 4 * t, u.create({
                        key: e,
                        iv: a,
                        salt: i
                    })
                }
            }, f = i.PasswordBasedCipher = g.extend({
                cfg: g.cfg.extend({kdf: t}), encrypt: function (e, t, a, i) {
                    return i = this.cfg.extend(i), a = i.kdf.compute(a, e.keySize, e.ivSize), i.iv = a.iv, e = g.encrypt.call(this, e, t, a.key, i), e.mixIn(a), e
                }, decrypt: function (e, t, a, i) {
                    return i = this.cfg.extend(i), t = this._parse(t, i.format), a = i.kdf.compute(a, e.keySize, e.ivSize, t.salt), i.iv = a.iv, g.decrypt.call(this, e, t, a.key, i)
                }
            })
        }(), function () {
            var e = a, t = e.lib.BlockCipher, i = e.algo, s = [], r = [], n = [], o = [], l = [], d = [], h = [], c = [], p = [], u = [];
            !function () {
                for (var e = [], t = 0; 256 > t; t++)e[t] = 128 > t ? t << 1 : t << 1 ^ 283;
                for (var a = 0, i = 0, t = 0; 256 > t; t++) {
                    var g = i ^ i << 1 ^ i << 2 ^ i << 3 ^ i << 4, g = g >>> 8 ^ 255 & g ^ 99;
                    s[a] = g, r[g] = a;
                    var f = e[a], v = e[f], m = e[v], _ = 257 * e[g] ^ 16843008 * g;
                    n[a] = _ << 24 | _ >>> 8, o[a] = _ << 16 | _ >>> 16, l[a] = _ << 8 | _ >>> 24, d[a] = _, _ = 16843009 * m ^ 65537 * v ^ 257 * f ^ 16843008 * a, h[g] = _ << 24 | _ >>> 8, c[g] = _ << 16 | _ >>> 16, p[g] = _ << 8 | _ >>> 24, u[g] = _, a ? (a = f ^ e[e[e[m ^ f]]], i ^= e[e[i]]) : a = i = 1
                }
            }();
            var g = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54], i = i.AES = t.extend({
                _doReset: function () {
                    for (var e = this._key, t = e.words, a = e.sigBytes / 4, e = 4 * ((this._nRounds = a + 6) + 1), i = this._keySchedule = [], r = 0; r < e; r++)if (r < a) i[r] = t[r]; else {
                        var n = i[r - 1];
                        r % a ? 6 < a && 4 == r % a && (n = s[n >>> 24] << 24 | s[n >>> 16 & 255] << 16 | s[n >>> 8 & 255] << 8 | s[255 & n]) : (n = n << 8 | n >>> 24, n = s[n >>> 24] << 24 | s[n >>> 16 & 255] << 16 | s[n >>> 8 & 255] << 8 | s[255 & n], n ^= g[r / a | 0] << 24), i[r] = i[r - a] ^ n
                    }
                    for (t = this._invKeySchedule = [], a = 0; a < e; a++)r = e - a, n = a % 4 ? i[r] : i[r - 4], t[a] = 4 > a || 4 >= r ? n : h[s[n >>> 24]] ^ c[s[n >>> 16 & 255]] ^ p[s[n >>> 8 & 255]] ^ u[s[255 & n]]
                }, encryptBlock: function (e, t) {
                    this._doCryptBlock(e, t, this._keySchedule, n, o, l, d, s)
                }, decryptBlock: function (e, t) {
                    var a = e[t + 1];
                    e[t + 1] = e[t + 3], e[t + 3] = a, this._doCryptBlock(e, t, this._invKeySchedule, h, c, p, u, r), a = e[t + 1], e[t + 1] = e[t + 3], e[t + 3] = a
                }, _doCryptBlock: function (e, t, a, i, s, r, n, o) {
                    for (var l = this._nRounds, d = e[t] ^ a[0], h = e[t + 1] ^ a[1], c = e[t + 2] ^ a[2], p = e[t + 3] ^ a[3], u = 4, g = 1; g < l; g++)var f = i[d >>> 24] ^ s[h >>> 16 & 255] ^ r[c >>> 8 & 255] ^ n[255 & p] ^ a[u++], v = i[h >>> 24] ^ s[c >>> 16 & 255] ^ r[p >>> 8 & 255] ^ n[255 & d] ^ a[u++], m = i[c >>> 24] ^ s[p >>> 16 & 255] ^ r[d >>> 8 & 255] ^ n[255 & h] ^ a[u++], p = i[p >>> 24] ^ s[d >>> 16 & 255] ^ r[h >>> 8 & 255] ^ n[255 & c] ^ a[u++], d = f, h = v, c = m;
                    f = (o[d >>> 24] << 24 | o[h >>> 16 & 255] << 16 | o[c >>> 8 & 255] << 8 | o[255 & p]) ^ a[u++], v = (o[h >>> 24] << 24 | o[c >>> 16 & 255] << 16 | o[p >>> 8 & 255] << 8 | o[255 & d]) ^ a[u++], m = (o[c >>> 24] << 24 | o[p >>> 16 & 255] << 16 | o[d >>> 8 & 255] << 8 | o[255 & h]) ^ a[u++], p = (o[p >>> 24] << 24 | o[d >>> 16 & 255] << 16 | o[h >>> 8 & 255] << 8 | o[255 & c]) ^ a[u++], e[t] = f, e[t + 1] = v, e[t + 2] = m, e[t + 3] = p
                }, keySize: 8
            });
            e.AES = t._createHelper(i)
        }(), module.exports = a
    },

    //TODO a(4)
    function a29(module, exports, a) {
        // var _$ = a(3), s = a(21);
        var _$ = a(5), s = a(6);
        module.exports = {
            getUUID: function () {
                return this.uuid = "1" + String((new Date).getTime()).slice(4) + String(Math.random()).slice(-6), this.uuid
            },
            getLC: function () {
                for (var e = "", t = 32; t--;) e += Math.floor(16 * Math.random()).toString(16);
                return e
            }, getWeid: function () {
                return "undefined" != typeof Stats && "undefined" != typeof Stats.WEID ? Stats.WEID : "5" + (new Date).getTime() + String(Math.random()).slice(-10)
            }
        }
    },

    //TODO a(5)
    function a3(module, exports) {

        var nativeBind = Function.prototype.bind, slice = Array.prototype.slice, emptyFn = function () {
        };

        module.exports = {
            extend: function (e, t) {
                var a = function () {
                };
                a.prototype = t.prototype, e.prototype = new a, e.prototype.constructor = e, e.superClass = t.prototype, t.prototype.constructor == Object.prototype.constructor && (t.prototype.constructor = t)
            }, trim: function (e) {
                return e.replace(/^\s\s*/, "").replace(/\s\s*$/, "")
            }, each: function (e, t) {
                var a, i;
                if (e instanceof Array) {
                    for (a = 0; a < e.length; a++)if (t.call(this, a, e[a]) === !1)return e
                } else for (i in e)if (t.call(this, i, e[i]) === !1)return e;
                return e
            }, getParamVal: function (e, t) {
                var a = new RegExp("(^|&)" + t + "=([^&]*)(&|$)", "i"), i = e.match(a);
                return null != i ? unescape(i[2]) : ""
            }, merge: function (e, t, a) {
                t || (t = {});
                for (var i in t)!t.hasOwnProperty(i) || a && e.hasOwnProperty(i) || (e[i] = t[i]);
                return e
            }, clearObj: function (e) {
                for (var t in e)delete e[t]
            }, setCookie: function (e, t, a) {
                a = a || {}, null === t && (t = "", a.expires = -1);
                var i = "";
                if (a.expires && ("number" == typeof a.expires || a.expires.toUTCString)) {
                    var s;
                    "number" == typeof a.expires ? (s = new Date, s.setTime(s.getTime() + 24 * a.expires * 60 * 60 * 1e3)) : s = a.expires, i = "; expires=" + s.toUTCString()
                }
                var r = a.path ? "; path=" + a.path : "", n = a.domain ? "; domain=" + a.domain : "", o = a.secure ? "; secure" : "";
                document.cookie = [e, "=", encodeURIComponent(t), i, r, n, o].join("")
            }, getCookie: function (e) {
                var t, a = new RegExp("(^| )" + e + "=([^;]*)(;|$)");
                return (t = document.cookie.match(a)) ? unescape(t[2]) : ""
            }, getJSON: function (e) {
                var t, a, i = e.url, s = e.data, r = e.success, n = e.fail, o = e.callback || "callback", l = e.timeout || 5e3, d = e.maxCount || 2, h = -1, c = 0, p = this, u = document.head || document.getElementsByTagName("head")[0] || document.documentElement, g = [];
                if (s)for (var f in s)g.push(f + "=" + s[f]);
                i += /\?/.test(i) ? "&" + g.join("&") : "?" + g.join("&");
                var v = function () {
                    var e = p.now(), t = "vjs_" + e + Math.floor(100 * Math.random());
                    return window[t] = function (a) {
                        m(), r.call(this, a, {responseTime: p.now() - e, retryCount: h, url: i}), window[t] = null
                    }, t
                }, m = function () {
                    window[t] && (window[t] = emptyFn), clearTimeout(c), a && a.parentNode && (u.removeChild(a), a.onload = a.onreadystatechange = null, a = void 0)
                }, _ = function () {
                    if (m(), h++, h >= d)return void(n && n.call(this, {url: i}));
                    t = v();
                    var s = i;
                    /(\=)\?(&|$)/i.test(s) ? s = s.replace(/(\=)\?(&|$)/i, "$1" + t + "$2") : s += "&" + o + "=" + t, e.log && e.log.pushLog("lib getJSON===" + s + "===" + t + "====" + h), a = document.createElement("script"), a.setAttribute("type", "text/javascript"), a.setAttribute("src", s), u.insertBefore(a, u.firstChild), c = setTimeout(_, l)
                };
                return _(), {destroy: m}
            }, formatValidateTime: function (e) {
                return e < 10 ? "0" + e : e
            }, ajax: function (e) {
                var t = e.url, a = e.data, i = e.type || "get", s = e.success, r = e.fail, n = [];
                for (var o in a)n.push(o + "=" + encodeURIComponent(a[o]));
                try {
                    var l = new XMLHttpRequest;
                    l.onload = function () {
                        4 == l.readyState && (l.status >= 200 && l.status < 300 || 304 == l.status ? s && s(l.responseText) : r && r(l.status))
                    }, "get" == i ? (t += t.indexOf("?") >= 0 ? "&" + n.join("&") : "?" + n.join("&"), l.open("get", t, !0), l.send(null)) : (l.open("post", t, !0), l.setRequestHeader("Content-type", "application/x-www-form-urlencoded"), l.send(n.length ? n.join("&") : null))
                } catch (d) {
                    r && r()
                }
            }, getScript: function (e, t, a) {
                var i = document.head || document.getElementsByTagName("head")[0] || document.documentElement, s = document.createElement("script");
                s.setAttribute("type", "text/javascript"), s.setAttribute("src", e), s.setAttribute("id", t), s.onload = function () {
                    a && a()
                }, i.insertBefore(s, i.firstChild)
            }, sendRequest: function (e, t) {
                var a = [];
                if (t) {
                    for (var i in t)a.push(i + "=" + t[i]);
                    e += /\?/.test(e) ? "&" : "?", e += a.join("&")
                }
                var s = new Image;
                s.onload = s.onerror = s.onabort = function () {
                    s.onload = s.onerror = s.onabort = null, s = null
                }, s.src = e
            }, timer: function (e, t) {
                var a, i = 0, s = !1;
                return {
                    repeatCount: function () {
                        return i
                    }, delay: function () {
                        return e
                    }, running: function () {
                        return s
                    }, start: function () {
                        a && clearInterval(a), i = 0, s = !0, a = setInterval(function () {
                            i++, t && t()
                        }, e)
                    }, stop: function () {
                        clearInterval(a), s = !1
                    }, reset: function () {
                        i = 0, a || this.start()
                    }
                }
            }, bind: function (e, t) {
                if (e.bind === nativeBind && nativeBind)return nativeBind.apply(e, slice.call(arguments, 1));
                var a = slice.call(arguments, 2);
                return function () {
                    return e.apply(t, a.concat(slice.call(arguments)))
                }
            }, createElement: function (e, t) {
                var a, i = document.createElement(e);
                for (a in t)t.hasOwnProperty(a) && (a.indexOf("-") !== -1 ? i.setAttribute(a, t[a]) : i[a] = t[a]);
                return i
            }, now: Date.now || function () {
                return +new Date
            }, formatTime: function (e) {
                var t = Math.floor(e / 60);
                t = t < 10 ? "0" + t : t.toString();
                var a = Math.floor(e % 60);
                return a = a < 10 ? "0" + a : a.toString(), t + ":" + a
            }, formatDate: function (e, t, a) {
                if (!e)return "";
                var i = e instanceof Date ? e : new Date(1e3 * e), s = String(i.getFullYear()).substr(2), r = i.getMonth() + 1, n = i.getDate(), o = i.getHours(), l = i.getMinutes(), d = i.getSeconds();
                return o = o < 10 ? "0" + o : o, l = l < 10 ? "0" + l : l, d = d < 10 ? "0" + d : d, t = t || "YY.MM.DD HH.mm.ss", a && (s = i.getFullYear(), r = r < 10 ? "0" + r : r, n = n < 10 ? "0" + n : n), t.replace(/YY|MM|DD|HH|mm|ss/gi, function (e) {
                    switch (e) {
                        case"YY":
                            return s;
                        case"MM":
                            return r;
                        case"DD":
                            return n;
                        case"HH":
                            return o;
                        case"mm":
                            return l;
                        case"ss":
                            return d
                    }
                })
            }, formatLiveTime: function (e) {
                return this.formatDate(e, "HH:mm:ss", !0)
            }, parseToJSON: function (e) {
                if (!e)return {};
                var t, a = {}, i = /(.+?)=(.+)/, s = e.replace(/^[?&]/, "").split("&");
                return s.forEach(function (e) {
                    t = e.match(i), null != t && (a[t[1]] = unescape(t[2]))
                }), a
            }, JSONTOStr: function (e) {
                if (JSON)return JSON.stringify(e);
                switch (typeof e) {
                    case"string":
                        return '"' + e.replace(/(["\\])/g, "\\$1") + '"';
                    case"object":
                        if (e instanceof Array) {
                            for (var t = [], a = e.length, i = 0; i < a; i++)t.push(arguments.callee(e[i]));
                            return "[" + t.join(",") + "]"
                        }
                        if (null == e)return "null";
                        var s = [];
                        for (var r in e)s.push(arguments.callee(r) + ":" + arguments.callee(e[r]));
                        return "{" + s.join(",") + "}";
                    case"number":
                        return e;
                    case!1:
                        return e;
                    case void 0:
                    default:
                        return ""
                }
            }, StrTOJSON: function (str) {
                return window.JSON ? JSON.parse(str) : eval("(" + str + ")")
            }, compare: function (e) {
                return function (t, a) {
                    var i = t[e], s = a[e];
                    return s < i ? 1 : s > i ? -1 : 0
                }
            }, isEmptyObj: function (e) {
                if ("function" == typeof Object.keys)return 0 == Object.keys(e).length;
                for (var t in e)return !1;
                return !0
            }, bjTimeToLocal: function (e) {
                var t = 60 * (e.getTimezoneOffset() + 480) * 1e3;
                return new Date(e.getTime() - t)
            }, arrayIndexOf: function (e, t) {
                if ("function" == typeof e.indexOf)return e.indexOf(t);
                for (var a = 0, i = e.length; a < i; a++)if (e[a] === t)return a;
                return -1
            }, checkFullScreenFn: function (e) {
                for (var t, a, i, s, r, n = ["webkit", "moz"], o = 0, l = n.length; o < l; o++) {
                    var d = n[o] + "RequestFullScreen", h = n[o] + "CancelFullScreen";
                    "function" == typeof e[d] && (t = d, i = e, r = n[o] + "fullscreenchange"), "function" == typeof document[h] && (a = h, s = document)
                }
                return t || "function" != typeof e.msRequestFullscreen || (t = "msRequestFullscreen", i = e), t || "function" != typeof e.webkitEnterFullScreen || (t = "webkitEnterFullScreen", i = e), a || "function" != typeof document.msExitFullscreen || (a = "webkitExitFullScreen", s = document), a || "function" != typeof e.webkitExitFullScreen || (a = "webkitExitFullScreen", s = e), {
                    requestFn: t,
                    requestEl: i,
                    cancelFn: a,
                    cancelEl: s,
                    changeEventName: r
                }
            }
        }
    },

    //TODO a(6)
    function a21(module, exports) {
        var a = {
            REGION: "cn",
            PLAY_STATE: "playState",
            FULLSCREEN_STATE: "fullscreenState",
            IS_AD: "isAd",
            USER_INFO: "userInfo",
            BARRAGE_STATE: "barrage_state",
            GRAVITY_ACTIVE: "gravityActive",
            VR_ACTIVE: "vrActive",
            LIVE_STATE: "live_state",
            LIVE_TIMESHIFT: "live_timeshift",
            PROTOCAL: "http://",
            EVENT: {
                PLAYER_COMMAND: "playerCommand",
                PLAYER_CALLBACK: "playerCallback",
                RESIZE: "resize",
                CHANGEBARRAGE: "changebarrage"
            },
            HOST_NAME: {
                API_LETV_COM: "api.le.com",
                API_WWW_LETV_COM: "api.www.le.com",
                API_MY_LETV_COM: "api.my.le.com",
                ZHIFU_LETV_COM: "zhifu.le.com",
                LETV_COM: "le.com",
                M_LETV_COM: "m.le.com",
                D_APi_M_LETV_COM: "d.api.m.le.com",
                API_LIVE_LETV_COM: "api.live.le.com",
                API_SPORTS_LETV_COM: "api.sports.le.com",
                WWW_LETV_COM: "www.le.com",
                YUANXIAN_LETV_COM: "yuanxian.le.com",
                PLAYER_PC_LETV_COM: "player.pc.le.com",
                APPLE_US_WWW_LETV_COM: "http://apple.us.www.letv.com",
                APPLE_WWW_LETV_COM_HK: "http://apple.www.letv.com.hk",
                APPLE_WWW_LETV_COM: "http://apple.www.letv.com",
                V_STAT_LETV_COM: "http://v.stat.letv.com",
                B_SCORECARDRESEARCH_COM: "http://b.scorecardresearch.com",
                STAT_PC_LETV_COM: "http://stat.pc.letv.com"
            },
            ERROR_CODE: {
                ERROR: "600",
                AUTH_TIMEOUT: "601",
                AUTH_ARGS_ERR: "603",
                AUTH_DATA_EMPTY: "604",
                AUTH_COOKIE_CHECK_ERR: "605",
                AUTH_COOKIE_RETRY_ERROR: "606",
                AUTH_TIME_SERVER_ERROR: "611",
                USER_ABNORMAL: "612",
                GSLB_TIMEOUT: "621",
                GSLB_DATA_EMPTY: "622",
                GSLB_ERROR: "624",
                TOKEN_TIMEOUT: "623",
                URL_NOT_SUPPORT_MP4: "640",
                URL_NOT_SUPPORT_M3U8: "641",
                OUT_SEA: "643",
                ADURL_NOT_SUPPORT: "646",
                COPY_RIGHT_BAN: "647",
                OFFLINE: "648",
                CN_BAN: "650",
                GSLB_SERVER_PRESSURE_LARGE: "651",
                AREA_BAN: "652",
                DRM_BAN: "653",
                ERROR_LIVE: "700",
                LIVE_INFO_ERROR: "701",
                LIVE_INFO_API_ERROR: "702",
                LIVE_INFO_API_TIMEOUT: "703",
                STREAMID_ERROR_LIVE: "704",
                LIVE_INFO_EMPTY: "705",
                GSLB_TIMEOUT_LIVE: "721",
                GSLB_DATA_EMPTY_LIVE: "722",
                VALIDATE_TIMEOUT_LIVE: "723",
                GSLB_BAN: "724",
                GSLB_DATA_ERROR: "725",
                GSLB_TOKEN_ERROR: "726",
                LIVE_CN_BAN: "727",
                LIVE_HK_BAN: "728",
                URL_NOT_SUPPORT_LIVE: "740",
                OUT_SEA_LIVE: "743",
                HOST_RIGHT_BAN_LIVE: "747",
                PLATFORM_RIGHT_BAN_LIVE: "748",
                NOT_SUPPORT_1080P_LIVE: "749",
                GSLB_SERVER_PRESSURE_LARGE_LIVE: "751",
                LIVE_DRM_BAN: "752",
                LIVE_AREA_BAN: "753",
                LIVE_PROXY_ERROR: "754"
            }
        };
        module.exports = a
    },


    //TODO a(7)
    function a2(module, exports, a) {


        function i() {
            if (n.Android && n.AndroidVersion >= 5 || n.weixin || n.letvMobile || n.iPad || n.iPhone || n.iPod)return !1;
            for (var e = !1, t = ["cpqb", "360zqb", "p6-t00", "sm-", "samsung", "huawei"], a = 0, i = t.length; a < i; a++) {
                var s = new RegExp(t[a], "i");
                if (s.test(r)) {
                    e = !0;
                    break
                }
            }
            return !!e

        }

        var s = a(5), r = navigator.userAgent.toLowerCase(), n = {
            iPhone: /iphone/.test(r),
            iPad: /ipad/.test(r),
            iPod: /ipod/.test(r),
            mac: /macintosh/.test(r),
            isLetv: /letv/.test(r),
            Android: /android/i.test(r),
            AndroidPad: /android/i.test(r) && !/mobile/.test(r),
            atwin: /win/.test(r),
            opera: /opera/.test(r),
            msie: /msie/.test(r),
            firefox: /firefox/.test(r),
            safari: /safari/i.test(r) && !/chrome/.test(r),
            wph: /windows phone/.test(r),
            ps: /playstation/.test(r),
            uc: /ucbrowser|ucweb/.test(r),
            qq: /qq(?!browser)/.test(r),
            qqbrower: /mqqbrowser/.test(r),
            browser360: /360browser/.test(r),
            liebao: /liebao/.test(r),
            xiaomi: /xiaomi/.test(r),
            weixin: /micromessenger/i.test(r),
            weibo: /__weibo__/i.test(r),
            letvMobile: /x500|x600|x800|x900|leuibrowser|EUI Browser/i.test(r),
            letvApp: /letvmobileclient|letvclient/i.test(r),
            LetvX60: /LETVX60/.test(r),
            LetvX40: /LETVX40/.test(r),
            Window: /Windows/.test(r),
            Linux: /linux/.test(r),
            IE11: /Trident/i.test(r),
            IE9: /MSIE 9.0/i.test(r),
            wifi: /nettype\/wifi/i.test(r)
        };
        n.iosVersion = (r.match(/os (\d+)/) || [])[1], n.chrome = /chrome/.test(r) && !n.qqbrower && !n.browser360 && !n.weibo && !n.liebao, n.Notplayinline = n.iPhone && !n.weixin && !n.qq && !n.letvApp && !(n.iosVersion >= 10 && n.safari), n.letvTv = n.isLetv && !n.letvMobile && !n.letvApp, n.isMobile = /Android/i.test(r) || /iPhone|iPad|iPod/i.test(r);
        var o = /(webkit)[ \/]([\w.]+)/, l = /(opera)(?:.*version)?[ \/]([\w.]+)/, d = /(msie) ([\w.]+)/, h = /(mozilla)(?:.*? rv:([\w.]+))?/, c = o.exec(r) || l.exec(r) || d.exec(r) || r.indexOf("compatible") < 0 && h.exec(r) || [];
        if (n.version = c[2] || "0", n.isPC = n.mac && n.safari, n.isIOS = n.iPad || n.iPhone || n.iPod, n.Android) {
            var p = r.match(/android([^;]+)/i);
            if (p && p[1]) {
                var u = Number(p[1].split(".")[0]);
                isNaN(u) || (n.AndroidVersion = u)
            }
        }
        n.supportM3U8 = s.getCookie("vjs-supportM3U8"), n.forceMp4 = i(), module.exports = n
    },


    //TODO a(8)
    function a39(module, exports, a) {
        // var i = a(23), s = a(3), r = a(4), n = a(6), o = a(2),
        var a23 = a(10), s = a(1), r = a(2), n = a(6), o = a(7), lc = a(4),

            l = function () {
            }, vvvvid='26544753';
        var d = {
            init: function () {
                this.playerData = {}, this.isServerTime = !1, this.isDomain = 0, this.serverTime = null,
                    this.isRetryCookie = !1, this.requestType = "new";
                this.playerData.videoType = "no";
            },
            getRequest: function () {
                var e;
                if (this.isServerTime) {
                    if (!this.serverTime) throw"mms api need server time";
                    e = this.serverTime
                } else e = s.now() / 1e3;

                switch (this.isDomain) {
                    case 0:
                        this.timeOut = 5e3;
                        break;
                    case 1:
                        this.timeOut = 8e3;
                        break;
                    case 2:
                    default:
                        this.timeOut = 1e4
                }

                var domainHost, playJsonUrl = n.PROTOCAL + n.HOST_NAME.PLAYER_PC_LETV_COM + "/mms/out/video/playJson.json", ttkey = r.getMmsKey(e);
                if (this.playerData.videoType = "" != o.supportM3U8 && "1" != o.supportM3U8 || o.forceMp4 ? "no" : "ios", parent === window)try {
                    domainHost = "m.le.com"
                } catch (h) {
                    domainHost = "m." + "le.com"
                }
                var d = {1: "350", 2: "1000", 3: "1300", 4: "720p"}, playJsonData = {
                    platid: 6,
                    splatid: 601,
                    tss: 'tvts',
                    id: vvvvid,
                    detect: "0",
                    dvtype: d[2] || "",
                    accessyx: 1,
                    domain: domainHost,
                    tkey: ttkey,
                    devid: lc.getLC(),
                    source: "1001",
                    lang: 'cn',
                    region: "cn",
                    isHttps: 0
                };
                var playJsonDataArr = [
                    "platid=3",
                    "splatid=301",
                    "tss=ios",
                    "id="+vvvvid,
                    "detect=0",
                    "dvtype="+d[2] || "",
                    "accessyx=1",
                    "domain=m.le.com",
                    "tkey="+ttkey,
                    "devid="+lc.getLC(),
                    "source=1001",
                    "lang=cn",
                    "region=cn",
                    "isHttps=0"
                ];


                //playJsonUrl = playJsonUrl + "?" + playJsonDataArr.join("&");

                this.jsonp = s.getJSON({
                    url: playJsonUrl,
                    data: playJsonData,
                    maxCount: 1,
                    timeout: this.timeOut,
                    success: s.bind(this.onSuccess, this),
                    fail: s.bind(this.onFail, this)
                })
            },
            onSuccess: function (data) {


                if (this.jsonp = null, data.code && 1 != data.code) return void this.sendError(n.ERROR_CODE.ERROR);

                if (data = data.msgs || data, data.drmFlag) return void this.sendError(n.ERROR_CODE.DRM_BAN);

                if (1003 == data.statuscode) data.playstatus && data.playstatus.stime ? this.isServerTime ? this.sendError(n.ERROR_CODE.AUTH_TIME_SERVER_ERROR) : (this.serverTime = data.playstatus.stime, this.isServerTime = !0, this.getRequest()) : this.sendError(n.ERROR_CODE.AUTH_ARGS_ERR); else if (1002 == data.statuscode) this.sendError(n.ERROR_CODE.AUTH_ARGS_ERR); else if (1 == data.playstatus.status) {
                    if (data.checkstatus && 1e4 != data.checkstatus) {
                        if (10005 == data.checkstatus && !this.isRetryCookie) return this.isRetryCookie = !0, void this.retryCookie();
                    }
                    this.isRetryCookie = !1//, this.parseMovieVO(data)
                } else switch (data.playstatus.flag) {
                    case 0:
                        this.sendError(n.ERROR_CODE.OFFLINE);
                        break;
                    case 2:
                    case 3:
                    case 5:
                        this.sendError(n.ERROR_CODE.COPY_RIGHT_BAN);
                        break;
                    case 4:
                    case 6:
                        this.sendError(n.ERROR_CODE.ERROR);
                        break;
                    case 1:
                        this.sendError(n.ERROR_CODE.AREA_BAN)
                }

                this.parseMovieVO(data);

            }, onFail: function (e) {
                this.jsonp = null,
                    ++this.isDomain <= 2 ? "new" == this.requestType ? this.getRequest() : this.getRequest2() : "new" == this.requestType && "cn" == this.manager.listener.get(n.REGION) && 0 == this.playerData.flashVar.isHttps ? (this.manager.pingback.sendProxyError(800, e.url), this.requestType = "old", this.isDomain = 0, this.getRequest2()) : this.sendError(n.ERROR_CODE.AUTH_TIMEOUT)
            }, retryCookie: function () {
                this.jsonp = s.getJSON({
                    url: n.PROTOCAL + n.HOST_NAME.D_APi_M_LETV_COM + "/api/flushCookie",
                    data: {vid: 27342537},
                    success: s.bind(function () {
                        this.getRequest()
                    }, this),
                    fail: s.bind(function () {
                        this.sendError(n.ERROR_CODE.AUTH_COOKIE_RETRY_ERROR)
                    }, this)
                })

            }, sendError: function (e) {

                console.log(e);
            }, onSuccessData: function (data) {

                console.log(data);

            }, onFailData: function (e) {
                console.log(e);
            }, parseMovieVO: function (e) {
                var t = e.playurl, a = {
                    cid: t.cid,
                    pid: t.pid,
                    vid: t.vid,
                    title: t.title,
                    nextvid: t.nextvid,
                    gdur: parseInt(t.duration),
                    poster: s.merge({defaultPic: t.imgprefix + "/thumb/2_"}, t.picAll),
                    ispay: 0 != e.trylook,
                    payTrylookTime: Math.floor(Math.min(540, "number" == typeof e.trylookTime ? e.trylookTime : 360) / 60),
                    firstlook: "0" != e.firstlook,
                    cutoff_p: e.cutoff_p,
                    cutoff_t: e.cutoff_t,
                    isAlbumPay: e.isAlbumPay
                };
                var i, r, o, l = {};
                for (var d in t.dispatch)if (!t.dispatch[d][2] && (o = t.dispatch[d][0], r = o.match(/(\?|&)vtype=([^&]+)(&|$)/)[2] || "", i = null, 182 == r || 21 == r && !l[1] ? i = 1 : 183 == r || 13 == r && !l[2] ? i = 2 : 22 == r && (i = 3), i)) {
                    l[i] = {urls: [], vtype: r, storePath: t.dispatch[d][1]};
                    for (var h = 0, c = t.domain.length; h < c; h++)l[i].urls.push(t.domain[h] + o)
                }
                if (s.isEmptyObj(l))return void this.sendError(n.ERROR_CODE.AUTH_DATA_EMPTY);


                var p = {
                    vinfo: a,
                    movieVO: l,
                    curVType: e.curVType
                };

                var playJsonUrl = l[2].urls[0];


                this.param = [
                    //"cutoff=120",
                    "format=1",
                    //"jsonp=?",
                    "expect=3",
                    "p1=" + '0',
                    "p2=" + '06',
                    "termid=2",
                    "ostype=" + ("un"),
                    "hwtype=" + ("iphone"),
                    "uuid=" + lc.getUUID(),
                    "vid=" + vvvvid
                ];


                playJsonUrl += '&' + this.param.join('&');
                this.jsonp2 = s.getJSON({
                    url: playJsonUrl,
                    maxCount: 1,
                    timeout: this.timeOut,
                    success: s.bind(this.onSuccessData, this),
                    fail: s.bind(this.onFailData, this)
                });

            }
        };
        module.exports = d;
    },

    //TODO a(9)
    function a6(module, exports, a) {
        function i(e) {
            return null != e && (9 == e.nodeType || e.nodeType == e.DOCUMENT_NODE)
        }

        function s(e) {
            return e instanceof Array
        }

        function r(e) {
            return l.call(e, function (e) {
                return null != e
            })
        }

        function n(e) {
            return e.replace(/^\s\s*/, "").replace(/\s\s*$/, "")
        }

        var o, l = [].filter, d = [].slice, h = /^\.([\w-]+)$/, c = /^#([\w-]*)$/, p = /^[\w-]+$/, u = a(7), g = a(1), f = function (e, t) {
            return new f.fn.init(e, t)
        }, v = function (e, t) {
            var a;
            try {
                return i(e) && c.test(t) ? (a = e.getElementById(RegExp.$1)) ? [a] : [] : 1 !== e.nodeType && 9 !== e.nodeType ? [] : d.call(h.test(t) ? e.getElementsByClassName ? e.getElementsByClassName(RegExp.$1) : _(e, RegExp.$1) : p.test(t) ? e.getElementsByTagName(t) : e.querySelectorAll(t))
            } catch (s) {
                return []
            }
        }, m = function (e, t, a) {
            t = t || [], e.selector = a || "", e.length = t.length;
            for (var i = 0, s = t.length; i < s; i++)e[i] = t[i];
            return e
        }, _ = function (e, t) {
            if (e.getElementsByTagName)for (var a = e.getElementsByTagName("*"), i = new RegExp("(^|\\s)" + t + "(\\s|$)"), s = 0, r = a.length; s < r; s++)if (i.test(a[s].className))return [a[s]];
            return []
        };
        f.fn = {
            init: function (e, t) {
                if (e) {
                    if (e.nodeType)return m(this, [e]);
                    var a;
                    if (s(e)) a = r(e); else {
                        if (t !== o)return f(t).find(e);
                        a = v(document, e)
                    }
                    return m(this, a, e)
                }
                return m(this)
            }, find: function (e) {
                var t, a = this;
                return t = "object" == typeof e ? f(e).filter(function () {
                    var e = this;
                    return [].some.call(a, function (t) {
                        return f.contains(t, e)
                    })
                }) : 1 == this.length ? f(v(this[0], e)) : this.map(function () {
                    return v(this, e)
                })
            }, each: function (e) {
                if ([].every) [].every.call(this, function (t, a) {
                    return e.call(t, a, t) !== !1
                }); else for (var t = 0, a = this.length; t < a; t++)e.call(this[t], t, this[t]);
                return this
            }, hasClass: function (e) {
                var t = this[0];
                return new RegExp("(\\s|^)" + e + "(\\s|$)").test(t.className)
            }, addClass: function (e) {
                var t = (e || "").split(/\s+/);
                return this.each(function () {
                    for (var e = this.className, a = 0, i = t.length; a < i; a++)f(this).hasClass(t[a]) || (e += " " + t[a]);
                    this.className = n(e)
                })
            }, removeClass: function (e) {
                var t = (e || "").split(/\s+/);
                return this.each(function () {
                    for (var e = this.className, a = 0, i = t.length; a < i; a++) {
                        var s = new RegExp("(\\s|^)" + t[a] + "(\\s|$)");
                        e = e.replace(s, " ")
                    }
                    this.className = g.trim(e)
                })
            }, on: function (e, t, a) {
                return this.each(function (i, s) {
                    var r = function (e) {
                        e.target = e.target || e.srcElement, t.call(a, e)
                    };
                    s.domid || (s.domid = String(Math.random()).slice(-4));
                    var n = e + "_" + s.domid;
                    t[n] = r, s.addEventListener ? s.addEventListener(e, r, !1) : s.attachEvent && s.attachEvent("on" + e, r)
                })
            }, off: function (e, t, a) {
                return this.each(function (a, i) {
                    var s = e + "_" + i.domid, r = t[s] || t;
                    i.removeEventListener ? i.removeEventListener(e, r, !1) : i.detachEvent && i.detachEvent("on" + e, r)
                })
            }, getStyle: function (e) {
                var t = this[0];
                if (u.msie) {
                    switch (e) {
                        case"opacity":
                            return (t.filters["DXImageTransform.Microsoft.Alpha"] || t.filters.alpha || {}).opacity || 100;
                        case"float":
                            e = "styleFloat"
                    }
                    return t.style[e] || t.currentStyle ? t.currentStyle[e] : 0
                }
                return "float" == e && (e = "cssFloat"), t.style[e] || (document.defaultView.getComputedStyle(t, "") ? document.defaultView.getComputedStyle(t, "")[e] : null) || 0
            }, setStyle: function (e, t) {
                return this.each(function () {
                    var a = this;
                    if (u.msie)switch (e) {
                        case"opacity":
                            return a.style.filter = "alpha(opacity=" + 100 * t + ")", void(a.currentStyle && a.currentStyle.hasLayout || (a.style.zoom = 1));
                        case"float":
                            e = "styleFloat"
                    } else"float" == e && (e = "cssFloat");
                    a.style[e] = t
                })
            }, getAttr: function (e) {
                var t = this[0];
                return t.getAttribute(e)
            }, setAttr: function (e, t) {
                return this.each(function () {
                    var a = this;
                    a.setAttribute(e, t)
                })
            }, offset: function () {
                var e = this[0], t = document.body, a = e.getBoundingClientRect();
                return {
                    top: a.top + (window.scrollY || t.parentNode.scrollTop || e.scrollTop) - (document.documentElement.clientTop || t.clientTop || 0),
                    left: a.left + (window.scrollX || t.parentNode.scrollLeft || e.scrollLeft) - (document.documentElement.clientLeft || t.clientLeft || 0)
                }
            }, width: function (e) {
                return "undefined" == typeof e ? this[0].offsetWidth : void(this[0].style.width = parseFloat(e) + "px")
            }, height: function (e) {
                return "undefined" == typeof e ? this[0].offsetHeight : void(this[0].style.height = parseFloat(e) + "px")
            }, map: function (e) {
                return f(f.map(this, function (t, a) {
                    return e.call(t, a, t)
                }))
            }
        }, f.fn.init.prototype = f.fn, f.isDebug = !1, module.exports = f
    },

    //TODO a(10)
    function a23(module, exports, a) {
        var i = a(6), s = function () {
        };
        s.prototype = {
            start: function (e) {
                this.manager = e, this.jsonp = null, this.manager.listener.on(i.PLAY_STATE, function (e, t) {
                    "init" != t && "stop" != t || (this.jsonp && this.jsonp.destroy(), this.jsonp = null)
                }, this), this.init()


            }, init: function () {
            }, sendError: function (e) {

                alert(e);
                //this.manager.pingback.sendError(e), this.manager.evt.trigger(i.EVENT.PLAYER_CALLBACK, "PLAYER_ERROR", {code: e}), this.manager.evt.trigger("vjs_showPopTip", e)
            }
        }, module.exports = s
    }
]);

